The Pytigon backend is a Django application, but not the Django you know from tutorials. Pytigon wraps Django's ORM, views, templates, and forms in layers of automation that eliminate boilerplate while preserving full extensibility.
models.Model — Every table gets a JSON column and hook methods.html — Indentation-based syntax with automatic tag closing| Subsystem | Purpose | Key Files |
|---|---|---|
| Templates | .ihtml → .html compilation, template hierarchy |
schindent/ |
| Models | JSONModel, hook methods, dynamic relationships | schdjangoext/models.py |
| Views | Generic TableView, FormView, TreeView | schviews/ |
| FastForm | String-based form definition language | schdjangoext/fastform.py |
| Context processor | Template context variables | Built-in |
| schhtml | PDF/print rendering engine | schhtml/ |
| FileSystem | Virtual filesystem abstraction | schfs/ |
| Spreadsheets and other documents | ODF/XLSX import/export | schspreadsheet/ |
| Translations | I18N/L10N support | Built-in |
| Extensions to Django | Fields | Custom model Fields, Filters, Tags |
| Background tasks | Task queue | Scheduled and RPC tasks |
| External interfaces | REST, GraphQL, OAuth, RPC, Wasm, C code | Multiple modules |
A typical request flows through these backend stages:
HTTP Request
→ URL routing (urls.py / auto-generated patterns)
→ View class selection (TableView / FormView / EditView / etc.)
→ Permission check (Django's auth system)
→ Model/QuerySet processing (JSONModel hooks)
→ Form processing (FastForm or Django Forms)
→ Template rendering (.ihtml → .html → rendered output)
→ HTTP Response (HTML / JSON / PDF / XLSX / etc.)
Each stage has hooks for customization without overriding the entire pipeline.